package br.com.keropizza.dominio;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.validation.constraints.NotNull;

import org.hibernate.validator.constraints.NotBlank;

/**
 * @author fabio
 *
 */
@Entity(name = "cliente")
public class Cliente {

	private Long id;

	private String nome;

	private List<Endereco> enderecos = new ArrayList<Endereco>();

	private String telefone;

	@Id
	@GeneratedValue
	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	@NotNull
	@NotBlank(message = "Nome deve ser preenchido.")
	@Column(nullable = false)
	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	@NotNull
	@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
	public List<Endereco> getEnderecos() {
		return enderecos;
	}

	private void setEnderecos(List<Endereco> enderecos) {
		this.enderecos = enderecos;
	}

	public void adicionaEndereco(Endereco endereco) {
		this.enderecos.add(endereco);
	}
	

	@NotNull
	@NotBlank(message = "Telefone deve ser preenchido.")
	@Column(unique = true, nullable = false)
	public String getTelefone() {
		return telefone;
	}

	public void setTelefone(String telefone) {
		this.telefone = telefone;
	}

}
